# models/sys_user.py
from sqlalchemy import Column, String, Date, DateTime, Boolean, Integer
from src.core.ormdb import Base
from src.core import str_utils as strU


class SysUser(Base):
    __tablename__ = "sys_user"
    __table_args__ = {'comment': '登录用户表'}  # 表的注释

    # id = Column(String(36), primary_key=True, default=uuid.uuid4(), comment="用户唯一标识ID")
    # id = Column(String(36), primary_key=True, default=strU.generate_id(), comment="用户唯一标识ID")
    # id = Column(String(36), primary_key=True , default=lambda: str(uuid.uuid4()), comment="用户唯一标识ID")
    id = Column(String(36), primary_key=True, default=lambda: strU.generate_id(), comment="唯一标识ID")
    api_id = Column(String(36), nullable=True, comment="API主键，用于关联其他系统")
    login_id = Column(String(255), nullable=True, comment="登录账号，用户登录时使用的账号")
    user_name = Column(String(255), nullable=True, comment="用户的名称，显示名称")
    login_password = Column(String(255), nullable=True, comment="密码，用户登录时使用的密码")
    role=Column(String(255), nullable=True, comment="角色，用户的角色")
    email = Column(String(255), nullable=True, comment="邮箱地址，用户的电子邮箱")
    person_id = Column(String(36), nullable=True, comment="个人ID，关联到个人实体")
    is_superuser = Column(Boolean, default=False, comment="是否为超级用户，0表示非超级用户，1表示超级用户")
    is_staff = Column(Boolean, default=True, comment="是否为工作用户，1表示工作用户，0表示非工作用户")
    effective_date = Column(Date, default="curdate()", comment="生效日期，用户生效的日期")
    expiry_date = Column(Date, nullable=True, comment="失效日期，用户失效的日期")
    deletion_mark = Column(Boolean, default=False, comment="删除标志，0表示未删除，1表示已删除")
    deletion_reason = Column(String(255), nullable=True, comment="删除原因，记录删除的具体原因")
    deletion_date = Column(DateTime, nullable=True, comment="删除日期，记录删除的时间")
    deletion_by = Column(String(255), nullable=True, comment="删除者，记录删除操作的执行者")
    # create_date = Column(DateTime, default="now()", comment="创建日期，记录创建的时间")
    create_date = Column(DateTime, default=lambda: strU.now(), comment="创建日期，记录创建的时间")
    creator_by = Column(String(255), nullable=True, comment="创建者，记录创建操作的执行者")
    last_updated_date = Column(DateTime, nullable=True, comment="最后更新时间，记录最后更新的时间")
    last_updated_by = Column(String(255), nullable=True, comment="最后更新者，记录最后更新操作的执行者")

